Ejemplo de un proyecto con una plantilla ASP .Net Core MVC haciendo uso de login de usuarios
Creamos un proyecto usando la plantilla de ASP.NET Core Web App (Model-View-Controller):
Le damos un nombre al proyecto:
Creamos el proyecto usando como "Authentication type" Individual Accounts:
Para crear la base de datos usaremos la herramienta de migración dotnet-ef, para consultar si la tenemos instalada lo hacemos con el siguiente comando:
dotnet tool list --global
En este caso no la tenemos instalada, para instalarla lo hacemos con el siguiente comando:
dotnet tool install --global dotnet-ef --version 6.0.0
Una vez tenemos instalada la herramienta, para generar la base de datos de nuestros proyecto lanzamos el siguiente comando desde la carpeta de del proyecto:
dotnet ef database update
Este comando generará la base de datos en el servidor que esté indicado en el connection string, podemos consultar el connection string en el archivo appsettings.json:
Por defecto la plantilla de Visual Studio genera el connection string para conectarse a una base de datos localdb y por lo tanto el comando dotnet-ef genera una instancia de esta DB, Aqui se explica como gestionar las conexiones a una base de datos localdb
Una vez llegados a este punto podemos ejecutar el proyecto y acceder a la pantalla de registro para registrar un nuevo usuario.
Como no tenemos configurado un enviador de correos se nos muestra el siguiente mensaje y nos da acceso automáticamente al enlace para confirmar la cuenta:
Hacemos click en Click here to confirm your account para finalizar la verificación de la cuenta:
Ahora podemos acceder a la pantalla de login para hacer login con nuestra cuenta:
Despues de hacer login se nos muestra con que cuenta estamos logueados:
Para la realización de la creación e identificación de usuarios se utiliza el paquete Microsoft.AspNetCore.Identity.UI que proporciona toda la funcionalidad.
Información Identity Microsoft Docs
La librería Identity genera una serie de endpoints para crear y manejar las cuentas de usuarios:
Podemos ver los enlaces a estos endpoints en algunos sitios del proyecto, pero si queremos acceder al código, para poder editar las páginas no podemos, ya que está integrado en las propias DLLs.
Si queremos modificar el código de las páginas por defecto de Identity tenemos que hacerlo de la siguiente manera:
Click derecho en el proyecto > Add > New Scaffolded Item
Seleccionamos Identity:
Seleccionamos las páginas que queremos modificar (voy a marcar login en este caso), y en Data Context Class seleccionamos la opción que nos da:
Al terminar se nos generan una serie de archivos:
El archivo Login.cshtml es donde está la página html referente al login, si la modificamos los cambios aparecerán en la pantalla de login.
NOTA: En mi caso dentro de la carpeta data se genera un ApplicationDbContext que hace que se genere un fallo porque esa clase ya existe en otra localización, solo con borrar esa carpeta con el archivo se soluciona el problema.
NOTA: Al usar la opcion New Scaffolded Item se generan errores muchas veces, no se el motivo exactamente, pero simplemente con volver a lanzar la opción acaba funcionando.
Al hacer cambios en el código de Login.cshtml:
Los cambios se reflejan en la página:
C# | Login | ASP Net Core